====== Welcome ======
A WIKI can and should be edited by all MIDIboxers and will hopefully grow to an enormous know-how database for all MIDIboxers. If you have not used a WIKI before, you can have a look at the [[syntax|guide]] first, so that you know how everything works. And never forget: do not be afraid - edit & add as much as you want, the worst that can happen is that it gets changed again!!! Enjoy!\\ **IMPORTANT:** Use your forum username and password to login/create/edit pages.

-----
\\

====== Introduction to MIDIbox ======

{{http://www.ucapps.de/mbhp/mbhp.jpg}}

The MIDIbox Hardware Platform is the consequential continuation of my work on [[MIDI]] controllers in the last years. It brings down every design to one standardized environment with reusable and exchangeable modules.

Well, this method is nothing new, did you ever saw the inner life of an old television, or a HIFI system, or a computer, or - of course - a modular synthesizer system? All are consisting of smaller or larger units, which interact over dedicated interfaces. This way of thinking, which simplifies the understanding of complex technical applications, is now also promoted by the MBHP.


The focus of the platform:

    * well defined and documented modules
    * small, uncomplicated circuits
    * realizable on PCBs (single-layer) and prototype boards
    * PCBs designed with a freeware CAD program
    * different firmwares for different configurations
    * open for future extensions by other hobbyists
    * programming examples in the PRG and MIOS Download section
    * NON-COMMERCIAL!
\\
\\

====== Basics ======

Some basic knowldge of MIDI and DIY electronics will help you in building a MIDIBox. These links will help cover the basics.

===== Getting started =====
  * [[getting_started|Getting Started with MIDI, Electronics, Microcontrollers and Programming]]
  * [[MBHP Acronyms]] Acronyms and abbreviations often used here
  * [[Questions and Answers|General FAQ - Questions and Answers]]
  * [[stryd_one_preparation#hardware|Things you'll need for DIY]]
  * [[troubleshooting|the Troubleshooting page]]

===== Learning & Looking up =====
  * [[Book Reviews]]
  * [[Encyclopedia Entries|Encyclopedia of electronic terms]]
  * [[MIDI Specification|MIDI Specification and MIDI Protocol]]

===== Practical Tips =====
  * [[MIOS Bootstrap Loader for Newbies]] - A **must read** for those building their first MidiBox Core board. This will get you up and running with MIOS, the starting point for all MidiBox projects.
  * [[Soldering]]
  * [[Forum Highlights]] <- check this out!
  * [[HowTo create a PCB (english/german)]]
  * [[Midibox Hardware Parts List|Parts List]] - List of parts needed for build the Midibox Hardware Platform
  * **Ordering**:
    - [[Order pre-made PCBs and parts kits|Where to order pre-made printed circuit boards (PCBs) and parts kits]]
    - [[Order components|Where to order components]]



-----
\\ Main Article: [[MIOS]]
====== MIOS: MIDIbox Operating System ======

The MIDIbox Operating System (MIOS) is the foundation program for every MidiBox project. Once you have built a Core board and have a bootstrap loader in the PIC, which may be done for you if you buy your PIC from one of the suppliers of MidiBox boards, loading MIOS is the next step.

It has been developed to the requirements of flexible MIDI controller applications. In difference to dedicated solutions, like today's commercial products or PIC16F based MIDIboxes, MIOS follows the concept of an open computing system as fundament for idea exchange and personal adaptions. 

The MIDIbox Gallery already points out different oppinions in terms of panel design, control elements and prefered workflow. Most of these MIDI controllers are based on [[MIDIbox64]], [[MIDIbox16E]] or [[MIDIO128]] and therefore limited to the provided features of the firmware. With MIOS, such controllers can be enhanced to multipurpose devices with exchangable program code, totally customized to the appr. host application, synthesizer or similar "MIDI devices". By releasing the application source codes, everybody will be free to use them as template for modifications and improvements. In this manner MIOS breaks down the skill barrier to getting started with PIC microcontrollers and allows - even people new to electronics - to realize projects far away from the main stream.

**Specs**

The operating system consist of some kind of kernel that provides user hooks to hard- and software events, and which offers functions for a simple interaction with modules of the MIDIbox Hardware Platform. 
\\
One core module, stuffed with a PIC18F452, can handle with:
    * up to 128 digital inputs
    * up to 128 digital outputs
    * up to 64 analog inputs
    * character and graphical dotmatrix LCDs
    * BankSticks (IIC EEPROMs)
    * one MIDI In, one MIDI Out, optionally as to-COM interface
\\

Several drivers have been included which manage following control tasks in background:
    * MIDI IO processing
    * Bootstrap loader
    * analog conversion of up to 64 pots, faders or other analog sources with a 10-bit resolution
    * motor handling for up to 8 motorfaders with a 10-bit resolution
    * handling of up to 64 detented/non-detented rotary encoders
    * handling of up to 128 buttons, touchsensors or similar digital input devices
    * handling of up to 128 LEDs, relays, Digital-Analog-Converters or similar output devices. In multiplex mode a nearly unlimited number of LEDs, LED rings and LED digits can be driven
    * Read/Write from/to EEPROM, Flash, BankStick
    * PIC18F cores linkable via MIDIbox Link
\\
The whole operating system has been written in assembly language and have been optimized for speed. 

MIOS currently allocates 8k of program memory (additional 4k are reserved for future extensions) and 640 bytes of RAM. The system architecture is quite stable, additional functions which load the CPU are not planned. 

The SRIO handler requires just only 75 uS to fetch the data from 128 digital input pins and to write out data to 128 digital output pins. 16 rotary encoders are handled within 100 uS. Analog inputs are scanned in background, every 200 uS a conversion result is available, on changes outside a definable deathband a user hook will be triggered. 

Up to 256 MIDI events can trigger dedicated functions, the processing of the event list requires about 300 uS. MIDI events can also be processed by a user routine for sysex parsing or similar jobs. 

A user timer allows to realize time triggered code, best example is the MIDIbox SID adaption which runs 1:1 cycle accurate to the PIC16F version (but one cycle is processed 3 times faster than on the PIC16F). 

Several measures have been taken to allow a unified interaction with MIOS: all MIOS runtime variables have been located to the BANKED RAM area and don't allocate the ACCESS page. 

Input and output parameters of functions and hooks are transfered over WREG, three additional registers (MIOS_PARAMETER[123]) and the FSR1 pointer. TBLPTR[LH], TABLAT, PROD[LH], FSR0 and FSR2 are saved and restored if a MIOS function temporary gets use of these SFRs.

Due to this consequential application interface (API), support for the C and other high-level languages is possible.

\\ Main Article: [[Application Development]]
===== Application Development =====

Now some words to the most interesting part: which applications can be realized with MIOS. In respect to the limitations of the sweet little PIC it should be clear that it isn't possible to implement a workstation with a splendidly constructed graphical user interface, support for audio samples, video processing, voice recognition or similar memory eating programs. The strengths of a PIC microcontroller are microsecond accurate IO interactions and realtime processing. Here a few examples, some of them have already been implemented: 

    * generic MIDI control device with pots/faders/buttons/motorfaders/encoders/leds/led-rings
    * MIDI IO processing device
    * emulation of existing controllers (for instance Logic Control or Steinberg Houston)
    * sequencers
    * synthesizers
    * ...add your whishes here...
\\
Of course, MIOS allows also to manage other jobs outside the world of MIDI, here some inspirations:
    * Robotics
    * Light control
    * HiFi equipment control
    * Game computer
    * Kid's computer
    * Handheld
    * ...add your whishes here...

Developing custom applications for [[MIOS]]-driven Pic-Chips is very easy and straightforward:

{{http://www.audiocommander.de/pics/sonst/MIOS_Overview.gif}}

\\

See the main article of this section for detailled information about application development in C for the Midibox Operating System - a **must read** for AppDevelopers! You'll find tutorials, IDE configuration tipps and compiling guides for all major OS, debugging tools and a lot more...
\\
\\


====== Midibox Hardware ======

===== Controllers =====

==== Official projects ====
  * [[MIDIbox 64]] - Midicontroller project for potentiometers and buttons.
  * [[MIDIbox64E]] - Midicontroller project for encoders and buttons. Recent improvements by TK allow it to also handle analog pots (see the changelog)
  * [[MIDIboxLC|MIDIboxLC]] - a MIOS based application emulating [[Logic Control]] and [[Mackie Control]]
  * [[MIDIboxMM]] - a MIOS based application emulating CM Labs MotorMix
  * [[MIDIO128]] - Project for up to 128 digital inputs (switches) and/or digital outputs (LEDs, solenoids, etc.). Useful for adding MIDI to keyboards. 
  * [[MIDIbox CV]] - Midi to CV project\\

==== Inofficial completed projects ====
  * [[MidiboxKB - using a C64 keyboard as input]]
  * [[midibox_uc|Midibox UC]] - Universal Control: Sysex Hardware Controller to handle MIDI-Synths
  * [[ACSensorizer|AC Sensorizer]] - ControllerBox for the connection of up to 8 (different) sensors
  * [[traktorizer_by_mte|Traktorizer]] - Controller for Traktor-DJ-Studio & other DJ-Software
  * [[Floorboard]] - PIC 16 based footcontroller


===== Modules =====

==== Microcontroller module ====
  * [[Core Module]]
  * [[PIC Programmer Modules]] - //! Note that you do not need these if you order PICs from SmashTV or Mike's!//
    * [[PIC Burner]] - actual PIC-Burner 
    * [[JDM]] - (expired) but also working Module to Burn all PICs (16F877,16F88,18F452 & 18F4620)

==== Input modules ====
  * [[AIN Module]] - Analog Input (0-5V)
  * [[DIN Module]] - Digial Input (ON/OFF)

==== Output modules ====
  * [[DOUT Module (Digital Output)|DOUT Module]] - Digital Output (eg. LED ON/OFF)
  * [[LCD Module (Liquid Crystal Display)|LCD Module]] - Liquid Crystal Display
  * [[AOUT Module (Analog Out)|AOUT Module]] - Analog Out to output Voltages (for Controls)

==== Sound modules ====
  * [[SID Module]] - for the famous C64 SoundChip
  * [[OPL3 Module]] - for the FM-Chips YMF262 and YAC512
  * [[midibox_speakjet|IIC SpeakJet Module]] - for the SpeakJet SoundChip

==== Memory expansion ====
  * [[BankStick]] - 32k / 64k Memory module

==== Midi I/O modules ====
  * [[LTC Module]] - MIDI LED Indicators + 1 MIDI-Out + 1 Thru (+ 1 optional to-COM-Port)
  * [[USB Modules]] - PC/USB Interface

==== Misc ====
  * [[MF Module]] to control Motorfaders
  * [[IIC Modules]] to communicate to other (Microcontroller-)Devices via I2C
  * [[MIDIbox Extensions]]
  * [[Layout Improvements|PCB Layout Improvements]] - Submit your PCB Layout Improvements!


===== Sequencers =====

==== Official projects ====
  * [[MIDIbox SEQ]] - Step sequencer project


===== Synthesizers =====

==== Official projects ====
  * [[MIDIbox SID]] - SID chip synthesizer project
  * [[MIDIbox FM]] - FM synthesizer project

==== Inofficial completed projects ====
  * [[MIDIbox SpeakJet]] - SpeakJet speech synthesizer project


==== Other Projects ====

  * [[MIDImon (MIDI Monitor)]]
  * [[MIDIfilter/processor]]
  * [[clockbox|ClockBox]]


===== Discontinued PIC16 based projects =====

** please build these only with a good reason:**
    * [[Old PIC16F Firmware Downloads]]
    * [[MIDIbox Plus]]
    * [[MIDIbox Plus Tutorial]]
    * [[MIDIbox64 SEQ]]

\\

===== Circuits =====

Circuit designs that can be incorporated into projects.

    *[[http://www.reprise.com/host/circuits/riaa_preamp.asp|RIAA Compensated Stereo Preamp]] - A turntable preamp board and circuit design. useful if you want to make a Traktor mixer/Controller with an optional turntable input.

    *[[http://www.discovercircuits.com|discovercircuits.com]] - discover circuits,  has 25,000+ electronic circuits or schematics cross-referenced into 500+ categories.    As a vital resource for engineers, hobbyists, inventors & consultants, the site's collection of information will help you find quick solutions to electronic design problems.

    *[[http://www.electronics-lab.com/index.html|Electronics Lab]] - find useful circuits with full description,  diagrams and PCB, electronics articles, links and downloads. :!::!::!: very cool site for electronics


==== Projects / Applications ====

Here you will find an overview and many links of midibox.org projects. These are **fully documented** MidiBoxes together with build-instructions and application software to upload onto the Microcontroller. You will need to build some modules (see [[MBHP]]) and upload the application. If you order your PIC-Microcontroller-Chip @ SmashTV or Mike's Midishop, you won't even need to burn anything onto the chip. Just connect it to your MIDI-Port and upload the application!

-> [[User projects]] <- Check this page to find a lot more projects and applications, growing from day to day.

====== User Space ======
  * [[user_gallery|User Pages]] – Create your own page and show what you're doing with your midibox!
  * [[User projects|User Projects]] - Add your projects, codes, pictures here! You can find a lot of cool customized boxes!
  


====== Tools & Helpers ======


===== Tools made by MIDIboxers =====

Various Midiboxers use their programming knowledge to make programs which are usefull for other midiboxers. If you have made a MIDIbox related tool, post a description and link here!



==== Open Source ===== 
  * [[MIOS Studio]] - an integrated development environment for MIOS.
  * [[JSynthLib]] - an Open Source Universal Synthesizer Patch Editor / Librarian written in the Java Language.
  * [[hex2syx.pl]] - a perl script that provides an alternative method to upload a .hex file to a MIOS core.
  * [[mk_syx.pl]] - a perl script for MIDIbox .syx configuration.
  * [[Change ID]] - a PIC app to change the MIOS Device ID, and other settings like to-COM flag, LCD mode and IIC MIDI addresses, **without reburning the PIC chip**.
  * [[mios_c_simulator_-_debugger|ACSim]] - A console C-based Simulator / Debugger; useful for developing new applications for MIOS. //You do not need this, if you don't know what this is// :)
  * [[SidPEC]] - Patch editor/converter for SID chip based synthesizers MidiBoxSID and SidStation.

GLCD and CLCD editors in Flash
http://compiler.kaustic.net/


==== Freeware ====

  * [[MIDIbox SID VSTi]] - the first remote-VST-Plugin for your MBHP Hardware-SID-Synth It processes MIDI-Data, only. Made by S.M.

=== Win32 ===
  * [[Bankchanger]] - a freeware MIDIbox64/64E Bankchanger app. Made by Didifeed.
  * [[MidiBox Patch Manager]] - a freeware tool to manage the patches of your MidiBox SID and FM synthesizers. By TL.

=== Serge ===
  * [[MIDICLOCK]] - A MIDI clock sender/receiver application app. It can be used for synchronization of MIDI devices. [[DUALMIDICLOCK]] is a version of this program that supports dual midi output.
  * [[MIDICLOCKDETECT]] - A tool that can be used for diagnosing MIDI devices. 
  * [[SysExBox]] - SysEx upload tool for MIOS and MIOS applications
  * [[vMIDIbox64]] - MIDIbox64 Editor and Emulator
  * [[vMIDIbox64E]] - MIDIbox64E Editor and Emulator.


==== Captain Hastings ====
* [[CLCD character editor]] 
* [[GLCD font editor]]


-----
\\
\\
\\

====== Links ======

==== Open Source Hardware ====
Other cool open source projects from around the net.

    *[[http://www.teuthis.com/|theutis.com]] - Open-Source MP3 player to listen to your MidiBox music on.

    *[[http://www.myplace.nu/mp3/|Yampp]] - yet another Open-Source MP3 player.(this one has USB capabilities)

    *[[http://www.arduino.cc/|Arduino]] - An open-source physical computing platform very cool programmable I/O board.

    *[[http://ronja.twibright.com/|Ronja]] - Ronja is a free technology project for reliable optical data links with a current range of 1.4km and a communication speed of 10Mbps full duplex.

    *[[http://www.fabathome.org/wiki/index.php?title=Main_Page|Fab@home.org]] - prototyping tool!!! (this is just cool)

-----
\\
\\
\\